// ActionScript file
import classes.Bola;

import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;

import mx.controls.Alert;
import mx.effects.Move;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.utils.ObjectUtil;

private static const SCREEN_WIDTH:int = 600;
private static const SCREEN_HEIGHT:int = 600;
private var bolas:Array;
private var idBola: Number;

private var timer: Timer;

private var mostrado:Boolean = false;

public function init():void {
	trace ("Tamos en Init");
	timer = new Timer(2000);
	timer.addEventListener(TimerEvent.TIMER, consultarJuego);
	bolas = new Array();
	fachada.conectar();
}

private function consultarJuego(e:TimerEvent): void {
	fachada.dataJuego();
}

private function moverBola(event:MouseEvent):void {
	fachada.coordenadas(idBola, event.localX, event.localY);
}

private function conectarOk(_ev:ResultEvent): void {
	idBola = new Number(_ev.result.toString());
	trace("Me asignaron el número " + idBola);
	if (idBola < 0) {
		Alert.show("Se alcanzó el máximo de jugadores conectados", "Error");
	} else { 
		for (var i:int = 0; i <= idBola; i++) {
			trace ("Iterando> :" + i); 
			bolas.push(new Bola(canvas, i == idBola? "img/bola.png" : "img/enemigo.png"));
		}
		timer.start();
	}
}

private function conectarNok(_ev:FaultEvent): void {
	trace("Error de conexión en conectar");
}

private function coordenadasOk(_ev:ResultEvent): void {
	trace("Las coordenadas se enviaron bien");
}

private function coordenadasNok(_ev:FaultEvent): void {
	trace("Error de conexión en coordenadas");
}

private function dataJuegoOk(_ev:ResultEvent): void {
	var respuesta:XML = new XML(_ev.result).children()[0];
	var count:Number = new Number(respuesta.children()[0]);
	var i:int;
	
	if (count > bolas.length) {
		for (i = bolas.length; i < count; i++) {
			trace ("Creando una nueva bola en la posicion " + i);
			bolas[i] = new Bola(canvas, "img/enemigo.png");
		}
	}
	
	var bolasData:XML = respuesta.children()[1];

	for (var a in bolasData.children()) {
		trace ("Moviendo la bola en la posicion " + a);
		trace(bolasData.children()[a].children());
		var id:Number = new Number(bolasData.children()[a].children()[0]);
		var x:Number = new Number(bolasData.children()[a].children()[1]);
		var y:Number = new Number(bolasData.children()[a].children()[2]);
		if (x != bolas[id].getX() || y != bolas[id].getY()) {
			bolas[id].moveTo(x, y);
		}	
	}
}

private function dataJuegoNok(_ev:FaultEvent): void {
	trace("Error de conexión en dataJuego");
}